Link to this headingShort Weierstrass Curves
Curve Formula:
y^2 = x^3 + a*x + b
Link to this headingBrainpool Curves
Link to this headingbrainpoolP160r1
Link to this headingbrainpoolP160t1
Link to this headingbrainpoolP192r1
Link to this headingbrainpoolP192t1
Link to this headingbrainpoolP224r1
Link to this headingbrainpoolP224t1
Link to this headingbrainpoolP256r1
Link to this headingbrainpoolP256t1
Link to this headingbrainpoolP320r1
Link to this headingbrainpoolP320t1
Link to this headingbrainpoolP384r1
Link to this headingbrainpoolP384t1
Link to this headingbrainpoolP512r1
Link to this headingbrainpoolP512t1
Link to this headingAnomalous
Link to this headingBN Curves
Link to this headingANSSI Curves
Link to this headingNIST Curves
B Stands for binary Curve
P Stands for Prime Curve
K Stands for Koblitz curve
B and K don’t use the normal Weierstrass curve formula
Link to this headingB-163 (sect163r2) (ansit163r2)
Link to this headingK-163 (sect163k1)
Link to this headingP-192 (secp192r1) (prime192v1)
- 192-bit
Link to this headingP-224 (secp224r1) (wap-wsg-idm-ecid-wtls12) (ansip224r1)
- 224-bit
- Is not safe to use
Link to this headingK-233 (sect233k1) (wap-wsg-idm-ecid-wtls10) (ansit233k1)
- 233-bit
Link to this headingP-233 (sect233p1)
- 233-bit
Link to this headingB-233 (sect233r1) (wap-wsg-idm-ecid-wtls11) (ansit233r1)
- 233-bit
Link to this headingP-256 (secp256r1) (prime256v1)
- 256-bit key
- Bruteforce as strong as 128bit [AES](/Crypto/Symmetric Encryption/AES)
- Can be vulnerable to attack if when choosing a random x value you don’t check that it is on the curve before using it
- Curve is
y^2 = x^3 − 3x + 0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b
Link to this headingsecp256k1
- Is not safe to use
- Curve is
y^2 ≡ x^3 + 7 \pmod{17}
Example:
Lets choose the mod N = 17 this means that y^2 \equiv x^3 + 7 \pmod{17}
Lets Plot some points:
x = 1, y = 5; (1^3 + 7 - 5^2 ) % 17 = 0 -> (1 + 7 - 25 ) % 17 = 0 -> -17 % 17 = 0
x = 2, y = 7; (2^3 + 7 - 7^2 ) % 17 = 0 -> (8 + 7 - 49 ) % 17 = 0 -> -34 % 17 = 0
x = 3, y = 0; (3^3 + 7 - 0^2 ) % 17 = 0 -> (27 + 7 - 0 ) % 17 = 0 -> 34 % 17 = 0
x = 4, y = ?; DNE in \pmod{17}
x = 5, y = 8; (5^3 + 7 - 8^2 ) % 17 = 0 -> (216 + 7 - 36 ) % 17 = 0 -> 68 % 17 = 0
x = 6, y = 6; (6^3 + 7 - 6^2 ) % 17 = 0 -> (125 + 7 - 64 ) % 17 = 0 -> 187 % 17 = 0
x = 7, y = ?; DNE in \pmod{17}
x = 8, y = 3; (8^3 + 7 - 3^2 ) % 17 = 0 -> (512 + 7 - 9 ) % 17 = 0 -> 510 % 17 = 0
x = 9, y = ?; DNE in \pmod{17}
x = 10, y = 2; (10^3 + 7 - 2^2 ) % 17 = 0 -> (1000 + 7 - 4 ) % 17 = 0 -> 1003 % 17 = 0
x = 11, y = ?; DNE in \pmod{17}
x = 12, y = 1; (12^3 + 7 - 1^2 ) % 17 = 0 -> (1728 + 7 - 2 ) % 17 = 0 -> 1734 % 17 = 0
x = 13, y = ?; DNE in \pmod{17}
x = 14, y = ?; DNE in \pmod{17}
x = 15, y = 4; (15^3 + 7 - 4^2 ) % 17 = 0 -> (3375 + 7 - 16 ) % 17 = 0 -> 3366 % 17 = 0
x = 16, y = ?; DNE in \pmod{17}
x = 17, y = ?; DNE in \pmod{17}
Integer Adding:
y^2 \equiv x^3 + 7 \pmod{17}
A = (15,13)
B = (1, 12)
slope = ((12-13) * mod_inv(1-15)) % 17 = (-1 * mod_inv(-14)) % 17 = (-6) mod 17 = 11
x = ((11 ** 2 ) - 15 -1 ) mod 17 = (105) mod 17 = 3
y = 11 * 3 + (13 - 11 * 15) mod 17 = -119 mod 17 = 0
A + B = (15,13) + (1, 12) = (3,0)
Integer Doubling:
y^2 ≡ x^3 + 7 (mod 17)
G = (15,13)
slope = ((3 * (15 ^ 2) + 0 / mod_inv(2 * 13))) % mod 17 = 1350 % mod 17 = 7
x = ((7 ** 2) - (2 * 15)) % 17 = (1822470) % 17 = 2
y = (slope * 15 + (13 - slope * 15)) % 17 = (13) % 17 = 13
2 * G = (2,13)
Integer Multiplication:
2 * (15,13) = 2 * (15,13) = (2,10) \\
3 * (15,13) = 2 * (15,13) + (15,13) = (8,3) \\
4 * (15,13) = 2 * (2 * (15,13)) = (12,1) \\
5 * (15,13) = 2 * (2 * (15,13)) + (15,13) = (6,6) \\
6 * (15,13) = 2 * (2 * (15,13)) + 2 * (15,13) = (5,8) \\
Link to this headingK-283 (sect283k1) (ansit283k1)
Link to this headingB-283 (sect283r1) (ansit283r1)
Link to this headingP-384 (secp384r1) (ansip384r1)
- 384-bit
- Is not safe to use
Link to this headingK-409 (sect409k1) (ansit409k1)
Link to this headingB-409 (sect409r1) (ansit409r1)
Link to this headingP-521 (secp521r1) (ansip521r1)
- 521-bit
- Bruteforce as strong as 256bit [AES](/Crypto/Symmetric Encryption/AES)
Link to this headingK-571 (sect571k1) (ansit571k1)
Link to this headingB-571 (sect571r1) (ansit571r1)